Peripheral Component Interconnect (PCI) passthrough is a technology that allows a virtual machine (VM) to directly access a physical PCI device (e.g., network interface card (NIC), graphics card, storage device, hardware accelerator, etc.) without hypervisor intervention. This is in contrast to traditional hypervisor-based device emulation, which requires the hypervisor to emulate the physical PCI device using a virtual device and mediate communication between the VM and the physical PCI device via the virtual device. By removing the hypervisor as an intermediary, PCI passthrough reduces the latency of VM-to-physical device communications and eliminates the CPU overhead incurred for device emulation. This, in turn, substantially improves the performance of VM operations that require interaction with the physical PCI device, such as network Input/Output (I/O), storage I/O, graphics rendering, and so on.
Due to its performance benefits, PCI passthrough is becoming an increasingly important and common feature in virtualized deployments. However, a significant limitation of PCI passthrough is that it is incompatible with live VM migration (referred to herein as simply “live migration”), which is a virtualization feature that allows a running VM to be moved from one host system to another without power-cycling the VM. There are existing mechanisms that attempt to address this incompatibility, but these mechanisms suffer from various shortcomings, such as the need for guest software modifications and/or inability to be applied to a wide range of PCI devices, that limit their scalability and usefulness.